1 from tkinter import*
2 from tkinter import ttk
3 import tkinter.messagebox
4 import datetime
5 import Fee_Backend
6
7
8 class Fee():
9 def __init__(self, master):
10 self.master = master
11 self.master.title('School Management System/Fee Report')
12 self.master.geometry('1350x750')
13 self.master.config(bg='lightblue')
14
15 # ==================================================Variables=================================================
16 self.recpt = StringVar()
17 self.name = StringVar()
18 self.admsn = StringVar()
19 self.date = StringVar()
20 self.branch = StringVar()
21 self.sem = StringVar()
22 self.total = DoubleVar()
23 self.paid = DoubleVar()
24 self.due = DoubleVar()
25
26 # ==================================================Functions=================================================
27 def Tuple(event):
28 try:
29 global st
30 index = self.list.curselection()[0]
31 st = self.list.get(index)
32
33 self.recpt_entry.delete(0, END)
34 self.recpt_entry.insert(END, st[1])
35 self.name_entry.delete(0, END)
36 self.name_entry.insert(END, st[2])
37 self.admsn_entry.delete(0, END)
38 self.admsn_entry.insert(END, st[3])
39 self.Date_entry.delete(0, END)
40 self.Date_entry.insert(END, st[4])
41 self.branch_entry.delete(0, END)
42 self.branch_entry.insert(END, st[5])
43 self.sem_entry.delete(0, END)
44 self.sem_entry.insert(END, st[6])
45 self.total_entry.delete(0, END)
46 self.total_entry.insert(END, st[7])
47 self.paid_entry.delete(0, END)
48 self.paid_entry.insert(END, st[8])
49 self.due_entry.delete(0, END)
50 self.due_entry.insert(END, st[9])
51 except IndexError:
52 pass
53
54 def Insert():
55 if (len(self.admsn.get()) != 0):
56 Fee_Backend.insert(self.recpt.get(), self.name.get(), self.admsn.get(), self.date.get(),
57 self.branch.get(), self.sem.get(), self.total.get(), self.paid.get(),
58 self.due.get())
59 self.list.delete(0, END)
60 self.list.insert(END, (self.recpt.get(), self.name.get(), self.admsn.get(), self.date.get(),
61 self.branch.get(), self.sem.get(), self.total.get(), self.paid.get(),
62 self.due.get()))
63
64 def View():
65 self.list.delete(0, END)
66 for row in Fee_Backend.view():
67 self.list.insert(END, row, str(' '))
68
69 def Reset():
70 self.recpt.set(' ')
71 self.name.set(' ')
72 self.admsn.set(' ')
73 #self.date.set(' ')
74 self.branch.set(' ')
75 self.sem.set(' ')
76 self.paid.set(' ')
77 self.due.set(' ')
78 self.Display.delete('1.0', END)
79 self.list.delete(0, END)
80
81 def Delete():
82 Fee_Backend.delete(st[0])
83 Reset()
84 View()
85
86 def Receipt():
87 self.Display.delete('1.0', END)
88 self.Display.insert(END, '\t\tRECEIPT' + '\n\n')
89 self.Display.insert(
90 END, '\tReceipt No.\t :' + self.recpt.get() + '\n')
91 self.Display.insert(END, '\tStudent Name :' +
92 self.name.get() + '\n')
93 self.Display.insert(END, '\tAdmission No.\t:' +
94 self.admsn.get() + '\n')
95 self.Display.insert(
96 END, '\tDate\t :' + self.date.get() + '\n')
97 self.Display.insert(
98 END, '\tBranch\t :' + self.branch.get() + '\n')
99 self.Display.insert(
100 END, '\tSemester \t :' + self.sem.get() + '\n\n')
101
102 x1 = (self.var_1.get())
103 x2 = (self.paid.get())
104 x3 = (x1 - x2)
105
106 self.Display.insert(END, '\tTotal Amount :' + str(x1) + '\n')
107 self.Display.insert(END, '\tPaid Amount :' + str(x2) + '\n')
108 self.Display.insert(END, '\tBalance\t :' + str(x3) + '\n')
109
110 self.due.set(x3)
111
112 def Search():
113 self.list.delete(0, END)
114 for row in Fee_Backend.search(self.recpt.get(), self.name.get(), self.admsn.get(), self.date.get(),
115 self.branch.get(), self.sem.get(), self.total.get(), self.paid.get(),
116 self.due.get()):
117 self.list.insert(END, row, str(' '))
118
119 def Update():
120 Fee_Backend.delete(st[0])
121 Insert()
122
123 def Exit():
124 Exit = tkinter.messagebox.askyesno(
125 'Attention', 'Confirm, if you want to Exit')
126 if Exit > 0:
127 root.destroy()
128 return
129
130 # ==================================================Frames===================================================
131 Main_Frame = Frame(self.master, bg='lightblue')
132 Main_Frame.grid()
133
134 Title_Frame = LabelFrame(
135 Main_Frame, width=1350, height=100, bg='lightblue', relief='ridge', bd=15)
136 Title_Frame.pack(side=TOP)
137
138 self.lblTitle = Label(Title_Frame, font=('arial', 40, 'bold'), text='FEE REPORT',
139 bg='lightblue', padx=13)
140 self.lblTitle.grid(padx=400)
141
142 Data_Frame = Frame(Main_Frame, width=1350, height=350,
143 bg='lightblue', relief='ridge', bd=15)
144 Data_Frame.pack(side=TOP, padx=15)
145
146 Frame_1 = LabelFrame(Data_Frame, width=850, height=350, bg='Navajo white', relief='ridge', bd=8,
147 text='Informations', font=('arial', 15, 'bold'))
148 Frame_1.pack(side=LEFT, padx=10)
149
150 Frame_2 = LabelFrame(Data_Frame, width=495, height=350, bg='Navajo white', relief='ridge', bd=8,
151 text='Fee Receipt', font=('arial', 15, 'bold'))
152 Frame_2.pack(side=RIGHT, padx=10)
153
154 List_Frame = Frame(Main_Frame, width=1350, height=150,
155 bg='Navajo white', relief='ridge', bd=15)
156 List_Frame.pack(side=TOP, padx=15)
157
158 Button_Frame = Frame(Main_Frame, width=1350, height=80,
159 bg='Navajo white', relief='ridge', bd=15)
160 Button_Frame.pack(side=TOP)
161
162 # ===================================================Labels================================================
163 self.recpt_label = Label(Frame_1, text='Receipt No. : ', font=(
164 'arial', 14, 'bold'), bg='Navajo white')
165 self.recpt_label.grid(row=0, column=0, padx=15, sticky=W)
166
167 self.name_label = Label(Frame_1, text='Student Name : ', font=(
168 'arial', 14, 'bold'), bg='Navajo white')
169 self.name_label.grid(row=1, column=0, padx=15, sticky=W)
170
171 self.admsn_label = Label(Frame_1, text='Admission No. : ', font=(
172 'arial', 14, 'bold'), bg='Navajo white')
173 self.admsn_label.grid(row=2, column=0, padx=15, sticky=W)
174
175 self.Date_label = Label(Frame_1, text='Date : ', font=(
176 'arial', 14, 'bold'), bg='Navajo white')
177 self.Date_label.grid(row=3, column=0, padx=15, sticky=W)
178
179 self.branch_label = Label(Frame_1, text='Branch : ', font=(
180 'arial', 14, 'bold'), bg='Navajo white')
181 self.branch_label.grid(row=4, column=0, padx=15, sticky=W)
182
183 self.sem_label = Label(Frame_1, text='Semester : ', font=(
184 'arial', 14, 'bold'), bg='Navajo white')
185 self.sem_label.grid(row=5, column=0, padx=15, sticky=W)
186
187 self.total_label = Label(Frame_1, text='TOTAL AMOUNT : ', font=(
188 'arial', 14, 'bold'), bg='Navajo white')
189 self.total_label.grid(row=2, column=2, padx=5, sticky=W)
190
191 self.paid_label = Label(Frame_1, text='PAID AMOUNT : ', font=(
192 'arial', 14, 'bold'), bg='Navajo white')
193 self.paid_label.grid(row=3, column=2, padx=5, sticky=W)
194
195 self.due_label = Label(Frame_1, text='BALANCE : ', font=(
196 'arial', 14, 'bold'), bg='Navajo white')
197 self.due_label.grid(row=4, column=2, padx=5, sticky=W)
198
199 # ==================================================Entries=================================================
200 self.var_1 = DoubleVar(Frame_1, value='15000')
201 d1 = datetime.date.today()
202 self.date.set(d1)
203
204 self.recpt_entry = Entry(Frame_1, font=(
205 'arial', 14), textvariable=self.recpt)
206 self.recpt_entry.grid(row=0, column=1, padx=15, pady=5)
207
208 self.name_entry = Entry(Frame_1, font=(
209 'arial', 14), textvariable=self.name)
210 self.name_entry.grid(row=1, column=1, padx=15, pady=5)
211
212 self.admsn_entry = Entry(Frame_1, font=(
213 'arial', 14), textvariable=self.admsn)
214 self.admsn_entry.grid(row=2, column=1, padx=15, pady=5)
215
216 self.Date_entry = Entry(Frame_1, font=(
217 'arial', 14), textvariable=self.date)
218 self.Date_entry.grid(row=3, column=1, padx=15, pady=5)
219
220 self.branch_entry = ttk.Combobox(Frame_1, values=(' ', 'CSE', 'IT', 'IS', 'CE'),
221 font=('arial', 14), width=19, textvariable=self.branch)
222 self.branch_entry.grid(row=4, column=1, padx=15, pady=5)
223
224 self.sem_entry = ttk.Combobox(Frame_1, values=(' ', 'FIRST', 'SECOND', 'THIRD'), font=('arial', 14), width=19,
225 textvariable=self.sem)
226 self.sem_entry.grid(row=5, column=1, padx=15, pady=5)
227
228 self.total_entry = Entry(Frame_1, font=(
229 'arial', 14), width=10, textvariable=self.var_1, state='readonly')
230 self.total_entry.grid(row=2, column=3, padx=8, pady=5)
231
232 self.paid_entry = Entry(Frame_1, font=(
233 'arial', 14), width=10, textvariable=self.paid)
234 self.paid_entry.grid(row=3, column=3, pady=5)
235
236 self.due_entry = Entry(Frame_1, font=(
237 'arial', 14), width=10, textvariable=self.due)
238 self.due_entry.grid(row=4, column=3, pady=7)
239
240 # ==================================================Frame_2=================================================
241 self.Display = Text(Frame_2, width=42, height=12,
242 font=('arial', 14, 'bold'))
243 self.Display.grid(row=0, column=0, padx=3)
244
245 # =============================================List box and scrollbar===========================================
246 sb = Scrollbar(List_Frame)
247 sb.grid(row=0, column=1, sticky='ns')
248
249 self.list = Listbox(List_Frame, font=(
250 'arial', 13, 'bold'), width=140, height=8)
251 self.list.bind('<<ListboxSelect>>', Tuple)
252 self.list.grid(row=0, column=0)
253 sb.config(command=self.list.yview)
254
255 # ==================================================Buttons=================================================
256 btnSave = Button(Button_Frame, text='SAVE', font=(
257 'arial', 14, 'bold'), width=10, command=Insert)
258 btnSave.grid(row=0, column=0, padx=5, pady=5)
259
260 btnDisplay = Button(Button_Frame, text='DISPLAY', font=(
261 'arial', 14, 'bold'), width=10, command=View)
262 btnDisplay.grid(row=0, column=1, padx=5, pady=5)
263
264 btnReset = Button(Button_Frame, text='RESET', font=(
265 'arial', 14, 'bold'), width=10, command=Reset)
266 btnReset.grid(row=0, column=2, padx=5, pady=5)
267
268 btnReset = Button(Button_Frame, text='UPDATE', font=(
269 'arial', 14, 'bold'), width=10, command=Update)
270 btnReset.grid(row=0, column=3, padx=5, pady=5)
271
272 btnSearch = Button(Button_Frame, text='SEARCH', font=(
273 'arial', 14, 'bold'), width=10, command=Search)
274 btnSearch.grid(row=0, column=4, padx=5, pady=5)
275
276 btnDelete = Button(Button_Frame, text='DELETE', font=(
277 'arial', 14, 'bold'), width=10, command=Delete)
278 btnDelete.grid(row=0, column=5, padx=5, pady=5)
279
280 btnReceipt = Button(Button_Frame, text='RECEIPT', font=(
281 'arial', 14, 'bold'), width=10, command=Receipt)
282 btnReceipt.grid(row=0, column=6, padx=5, pady=5)
283
284 btnExit = Button(Button_Frame, text='EXIT', font=(
285 'arial', 14, 'bold'), width=10, command=Exit)
286 btnExit.grid(row=0, column=7, padx=5, pady=5)
287
288
289 root = Tk()
290 obj = Fee(root)
291 root.mainloop()